// 数据管理模块
export const STORAGE_KEY = 'nav_data_v2';

// 工具函数: 安全的localStorage操作
export function safeStorageGet(key) {
    try {
        return localStorage.getItem(key);
    } catch (error) {
        console.error('LocalStorage读取失败:', error);
        return null;
    }
}

export function safeStorageSet(key, value) {
    try {
        localStorage.setItem(key, value);
        return true;
    } catch (error) {
        console.error('LocalStorage写入失败:', error);
        return false;
    }
}

// 清理JSON数据
function cleanJsonData(rawData) {
    return rawData.trim()
        .replace(/\/\/.*$/gm, '')
        .replace(/\/\*[\s\S]*?\*\//g, '')
        .replace(/,\s*([\]}])/g, '$1');
}

// 修复JSON结构
function fixJsonStructure(data) {
    const firstChar = data.charAt(0);
    const lastChar = data.charAt(data.length - 1);
    
    if (firstChar === '{' && lastChar !== '}') return data + '}';
    if (firstChar === '[' && lastChar !== ']') return data + ']';
    return data;
}

// 初始化数据
export function initData() {
    try {
        const rawData = safeStorageGet(STORAGE_KEY);
        if (!rawData) return getDefaultData();
        
        // 尝试直接解析
        try {
            const directParsed = JSON.parse(rawData.trim());
            if (isValidData(directParsed)) return directParsed;
        } catch (e) {
            // 继续清理和修复
        }
        
        // 清理和修复数据
        const cleanData = fixJsonStructure(cleanJsonData(rawData));
        const parsedData = JSON.parse(cleanData);
        
        if (isValidData(parsedData)) {
            return parsedData;
        } else {
            console.warn('数据验证失败，使用默认数据');
        }
    } catch (error) {
        console.error('数据初始化失败:', error);
    }
    
    return getDefaultData();
}

// 获取默认数据
function getDefaultData() {
    return {
        tabs: ['首页'],
        icons: { '首页': [] },
        version: 2
    };
}

// 验证数据结构的有效性
export function isValidData(data) {
    try {
        const valid = data &&
                Array.isArray(data.tabs) && 
                data.tabs.length > 0 &&
                typeof data.icons === 'object' &&
                data.tabs.every(tab => typeof tab === 'string' && 
                                        tab.trim().length > 0 && 
                                        Array.isArray(data.icons[tab]));
        if (!valid) {
            console.warn('数据验证失败:', data);
        }
        return valid;
    } catch (error) {
        console.error('数据验证过程出错:', error);
        return false;
    }
}

// 保存数据
export function saveData(data) {
    try {
        if (!isValidData(data)) {
            console.error('数据结构验证失败，无法保存:', data);
            return false;
        }
        
        const success = safeStorageSet(STORAGE_KEY, JSON.stringify(data));
        if (!success) {
            console.error('保存数据到localStorage失败');
        }
        return success;
    } catch (error) {
        console.error('保存数据失败:', error);
        return false;
    }
}

// 导出模块
export default {
    STORAGE_KEY,
    safeStorageGet,
    safeStorageSet,
    initData,
    isValidData,
    saveData
};